1. Field of the Invention
This invention relates generally to the field of computing technology and more particularly concerns the correcting of duty cycles during the data transmission over a computer system or network.
2. Description of the Related Art
In computer technology, data transmission may take place in a computer system. In addition, computers may intercommunicate through data transmission through a network connecting numerous computers. For example, in a typical computer system, a computer system may include a computer and a storage device connected to it. For the computer to transfer data to and from the storage device, an input and output connected by differential drivers may be utilized.
Within a computer system, it is often desirable to connect a variety of peripherals to the system bus of the computer itself for communication with the central processing unit and other devices connected to the computer. A variety of bus types may be used, and for any bus it is important to have bus drivers and bus receivers that allow devices to communicate quickly, efficiently and accurately.
FIG. 1A illustrates an embodiment of a computer system 10. Computer system 10 includes a computer 12, a disk drive 14, a tape drive 16, and any number of other peripherals 18 such as card reader units, voice input/output, displays, video input/output, scanners, etc. The computer and peripherals in this example are connected via a Small Computer System Interface (SCSI) bus 20, although a wide variety of other buses may also be used.
Any number of computers or hosts may be present in computer system 10 and be connected to SCSI bus 20. Each computer may also contain a variety of hardware and software. By way of example, computer 12 includes a monitor 30, a motherboard 32, a wide variety of processing hardware and software 34 and a SCSI host adapter card (or interface card) 36. Host adapter card 36 provides an interface between the microcomputer bus of computer 12 located on motherboard 32 and SCSI bus 20.
SCSI is a universal parallel interface standard for connecting disks and other high performance peripherals to microcomputers. However, it should be appreciated that computer system 10 is an example of a system, and other interface standards having characteristics similar to SCSI may also be used in such a computer system. By way of example, an Intelligent Peripheral Interface (IPI) standard is one such other standard.
In one example, SCSI bus 20 is an 8-bit parallel flat cable interface (18 total signals) with hand shakes and protocols for handling multiple hosts and multiple peripherals. It has both a synchronous and an asynchronous mode, and has defined software protocols. In the embodiment shown, the SCSI bus uses differential drivers, although SCSI is also available with single wire drivers. SCSI interface cards (such as card 36) plug into most microcomputer buses including VME, Multibus I and II, PCI, ISA, VL, EISA and MCA. In another embodiment, SCSI bus 20 is a 16-bit parallel cable interface (27 total signals). In other embodiments motherboard 32 has SCSI adapter card 36 incorporated into the motherboard itself, and a separate, plug-in adapter card is not needed. SCSI bus 20 is a multi-drop bus typically produced as a flat cable that connects from a computer 12 to any number of peripherals. In this example, disk drive 14, tape drive 16, and other peripherals 18 connect to SCSI bus 20 by tapping into the bus. In other examples, it is possible for any number of peripherals to be inside computer 12 in which case SCSI bus 20 may also be present inside computer 12 also.
Disk drive 14 includes the physical disk drive unit 40 and SCSI controller card 42 and other internal cables and device level interfaces (not shown) for enabling the unit to communicate with computer 12. After connecting to disk drive 14, SCSI bus 20 continues on to connect to tape drive 16. Tape drive 16 includes the physical tape drive 50, SCSI controller card 52, and other internal cables and interfaces (not shown) for communicating with computer 12.
SCSI bus 20 also connects to any number of other peripherals 18. In alternative embodiments of the invention, any of the peripherals shown may eliminate the SCSI controller card by using an “embedded SCSI” architecture in which the SCSI bus becomes also the device level interface. In these peripherals, a cable such as SCSI bus 20 may be connected directly from motherboard 32 of a computer to a peripheral without the need for connecting to an internal controller card.
FIG. 1B shows an apparatus 80 by which value 70 is transmitted from computer 12 to peripheral 18. FIG. 1B shows a value 70 being transmitted by a driver 72 from computer 12 to a receiver 78 in peripheral 18. Because SCSI bus 20 uses a voltage differential technique of transferring information, value 70 is transmitted using a signal line 82 from driver 72 and also using its complement, signal 84. In other words, signal lines 82 and 84 are used to transmit information for bus line data 54. In a similar fashion, information for other bus lines is transmitted using two signal lines.
The SCSI bus also uses a bias voltage in the termination at each end of the SCSI bus. The termination bias voltage is used during the arbitration phase of SCSI protocol in order to help determine which devices are asserting which bits on the bus. Without a termination bias voltage, it would be difficult to determine which device is asserting a data bit because bits not being asserted would be floating. The need for a termination bias voltage on a SCSI bus and its ramifications are discussed in greater detail below. To achieve the termination bias voltage, computer 12 includes a voltage source V(A) 86 (for example, 1.5 volts) and a voltage source V(B) 88 (for example, 1.0 volt) which are connected in series using resistors 60 (for example, 270 ohms), resistor 62 (for example, 138 ohms), and resistor 64 (for example, 270 ohms). This termination bias voltage circuit is connected to signal lines 82 and 84 as shown. Thus, point 61 is typically at 1.3 volts due to the termination bias voltage, and point 63 is typically at 1.2 volts due to the termination bias voltage. The termination bias voltage also results in an approximate termination resistance of 110 ohms.
In a similar fashion, peripheral 18 also includes a termination bias voltage. As in computer 12, resistors 65, 66, and 67 connect in series voltages V(A) and V(B). These voltages and resistances may have similar values as for computer 12 and are connected to signal lines 82 and 84 as shown. Also shown in FIG. 1B are multiple bus taps 68 symbolizing the variety of other devices, computers, and peripherals that may also tap onto SCSI bus 50.
This technique for transmitting data over a SCSI bus uses a low-voltage swing differential (LVD) driver and a low offset voltage, high-speed, differential input receiver. The driver for this type of SCSI bus uses an asymmetrical output, where one direction has more drive strength than the other. The reason for this asymmetrical output is because of the termination bias voltage as shown in FIG. 1B.
Unfortunately, this termination bias voltage and the asymmetrical driver output that it necessitates can have undesirable effects. The reason for the need for a termination bias voltage has to do with the dual use of the data lines of a SCSI bus. A SCSI bus includes data lines that are used during a data phase of communication, i.e., high-speed transmission of data. A SCSI bus also includes various control lines that are used to transmit control signals at a lower speed during a protocol phase of communication on the bus. However, the data lines of a SCSI bus have a dual use. During the protocol phase of communication, the data lines are also used to transmit control signals used for arbitration on the bus. Thus, the data lines of a SCSI bus must be able to operate in a high-speed data phase and also in a low-speed protocol phase. Operation of these lines in the protocol phase requires a termination bias voltage.
The data lines have this dual use because of the way peripherals indicate when they wish to use the SCSI bus. When a peripheral on a SCSI bus wishes to use the bus, it asserts one of the data lines. Each peripheral on the bus is associated with one of the data lines, thus it can be determined which peripheral wants to use the bus by which data line is being asserted. However, when one peripheral is asserting one data line, the other data signals must be driven to a known state so that the SCSI bus and its attached devices can determine which data line is being asserted. In other words, if the data lines are simply floated it would be difficult to determine which of many data lines is being asserted.
Therefore, pull-up voltages are used at each end of the SCSI bus so that any non-driven data lines are put into a negated state. Thus, when one peripheral asserts one data line, all of the other data lines will be in a negated state and it may then be determined which peripheral wishes to use the bus. These pull-up voltages are called termination bias voltages and are due to the dual use of the data lines of a SCSI bus. A termination bias voltage is present at each end of a SCSI bus and is used with single-ended drivers and also with differential drivers.
Duty cycle errors can be created because delay differences may exist in a driver. Delay from the input to the noninverting output may be different from the input to the inverting output. In addition, there could also be an offset on the receiver. In SCSI systems, there are more complicating factors and more offset. In such a system, there can be a differential transmitter and differential receiver where there is a termination by the transmitter and a termination by the receiver. If a top transmission line is inverting and a bottom transmission line is noninverting then a termination may exist that has a bias. Therefore, a positive voltage and a negative voltage may exist in which case the termination can cause an offset onto the line. This is typically done intentionally because it was believed that it was a good way to keep line in a determined state. Unfortunately, the offset that is put in, when there is attenuation the duty cycle may be adversely affected and generate more duty cycle error. If a square wave is transitted where 50% of the time high and 50% low. This means that in a 50% duty cycle, 50% of the signal is low and 50% of the signal is high. This is typically desired in a data transmission signal. If a system can transmit and receive 50% duty cycle then it can determine if there is an error exists in the transmission signal by calibrating transmission system at 50% (i.e., if transmit at 50%, want to receive 50% so one knows that transmission media is not distorting the signal). In a SCSI system, the offset is going to generate duty cycle distortion. SCSI specification makes the SCSI driver have an unbalanced output such that the outputs cancel out the offset. Instead of having an unbalanced output, an anti-offset or anti-bias can be used to cancel out the offset that is built in. Therefore, a symmetrical driver may be used to apply an anti-offset. Unfortunately, in such a system, two sources of duty cycle errors are then produced with one source from the termination and an additional source from the driver. Problem is bad in a SCSI system because the termination and the offset driver can introduce a lot more error. Therefore, those problems are undesirable because duty cycle error means that there is an error in the data transmitted and received. If a 50/50 duty cycle is sent and 40/60 is received then the cycle receiving the 40 has lost some of its margin. Consequentially, timing margin is minimized in one direction. If one is receiving an input signal a particular voltage is used where ideally centered between the extremes of the two signals. If the signal is moved around sample voltage is desired but not attained and becomes randomized which can cause duty cycle error. Therefore it is desirable to eliminate the offset and the resulting duty cycle error so data transmission may be optimized.
In view of the foregoing, what is needed is a way to correct duty cycle errors. Such an approach would thereby ensure proper data transmission in a computer system.